package br.com.sanambiental.san.controlador;

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;

import br.com.sanambiental.san.controlador.visao.PreCadastroClienteVisao;
import br.com.sanambiental.san.entidade.PreCadrastroCliente;
import br.com.sanambiental.san.servico.PreCadastroClienteServico;
import br.gov.caixa.pedesgo.arquitetura.comum.objeto.UtilObjeto;
import br.gov.caixa.pedesgo.arquitetura.controlador.ManutencaoBean;
import br.gov.caixa.pedesgo.arquitetura.integracao.DAO;
import br.gov.caixa.pedesgo.arquitetura.mensagem.MensagensUtil;
import br.gov.caixa.pedesgo.arquitetura.negocio.servico.Servico;

/**
 * <p>
 * PreCadastroClienteMB
 * </p>
 * <p>
 * Descrição: MB de pré cadastro cliente
 * </p>
 * <br>
 * <b>Empresa:</b> Cef - Caixa Econômica Federal
 * 
 * @author Waltenes Junior
 * @version 1.0
 */
@ManagedBean
@SessionScoped
public class PreCadastroClienteMB extends ManutencaoBean<PreCadrastroCliente>
	implements Serializable {

    private static final long serialVersionUID = 6975042176854064940L;

    @ManagedProperty(value = "#{preCadastroClienteServico}")
    PreCadastroClienteServico servico;

    PreCadastroClienteVisao visao;

    /**
     * <p>
     * Método responsável por abrir pagina de consulta com os dados carregado
     * <p>
     * 
     * @return String com a pagina de consulta
     * @author Waltenes Junior
     */
    public String abrirConsulta() {
	this.carregarConsulta();
	return "/paginas/sistema/preCadastroCliente/consulta.xhtml";
    }

    /**
     * <p>
     * Método responsável por carregar lista para tela de consulta
     * <p>
     * 
     * @author Waltenes Junior
     */
    private void carregarConsulta() {
	this.getVisao().setLista(this.servico.listarPreCadastroCliente());
    }

    /**
     * <p>
     * Método responsável por atribuir valor a entidade da visão
     * <p>
     * 
     * @param entidade
     * @return null
     * @author Waltenes Junior
     */
    public String atribuirValorEntidade(final PreCadrastroCliente entidade) {
	this.getVisao().setEntidade(entidade);
	return null;
    }

    /**
     * <p>
     * Método responsável por excluir um pre cadastro
     * <p>
     * 
     * @author Waltenes Junior
     */
    public String excluirPreCadastroCliente() {

	MensagensUtil.adicionaMensagemDeSucesso(
		super.getNomeVarResourceBundle(),
		this.servico.excluirCadastroPreAnalise(this.getVisao().getEntidade()));

	return "/paginas/sistema/preCadastroCliente/consulta.xhtml";
    }

    /**
     * @see br.gov.caixa.pedesgo.arquitetura.controlador.AbstractBean#getPrefixoCasoDeUso()
     */
    @Override
    protected String getPrefixoCasoDeUso() {
	return null;
    }

    /**
     * @see br.gov.caixa.pedesgo.arquitetura.controlador.AbstractBean#getService()
     */
    @Override
    public <S extends Servico<PreCadrastroCliente, DAO<PreCadrastroCliente>>> S getService() {
	return null;
    }

    /**
     * Define o valor do atributo servico.
     * 
     * @param servico
     *            valor a ser atribuído
     */
    public void setServico(PreCadastroClienteServico servico) {
	this.servico = servico;
    }

    /**
     * @see br.gov.caixa.pedesgo.arquitetura.controlador.AbstractBean#getVisao()
     */
    @Override
    public PreCadastroClienteVisao getVisao() {
	if (!UtilObjeto.isReferencia(this.visao)) {
	    this.visao = new PreCadastroClienteVisao();
	}
	return this.visao;
    }
}